<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1. 实现树形结构, pid就是每个成员的父级
      let data = [
        { id: 1, pid: 0 },
        { id: 2, pid: 1 },
        { id: 3, pid: 0 },
        { id: 4, pid: 2 },
      ];



//       let tree={

//       };
//       for( let item of data ){
//         if(tree[item.pid] == undefined){
//           tree[item.pid] =[];
//         }
//         tree[item.pid].push(item)
//       }


//       function build(pid){
//         let result=[];
//         if(tree[pid]!== undefined){
//           for(let item of tree[pid]){
//             let child = build(item.id);
//             if( child.length >0){
//               item.children = child;
//             }
//             result.push(item);
//           }
//         }
//         return result;
//       }

// let treeData = build(0);  
// console.log(JSON.stringify(treeData))










      



    









      // 2. 不修改代码的情况下, 实现修改 obj 的内容
      const test = (() => {
        let obj = {
          a: '变量a',
          b: '变量b',
        };
        return {
          get: (k) => {
            return obj[k];
          },
          set:(k, v) => {
            obj[k] = v;
          }

        };
      })();
      console.log(test.get('c'));
      test.set('a','d')
      console.log(test.get('a'));

      // 3. 得出以下结果, 并且说明原因
      window.number = 2;
      let obj = {
        number: 3,
        db: (function () {
          this.number *= 4;
          return function () {
            this.number *= 5;
          };
        })(),
      };
      let db = obj.db;
      db();//调用db，局部对象的number属性现在等于60 
      obj.db();//300（60乘以5）
      console.log(window.number);// 输出全局对象的number属性，它仍然是2，因为在这个作用域中没有改变它 
      console.log(obj.number);//300
    </script>
  </body>
</html>
